package com.warehouse_management.system.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.warehouse_management.login.model.Users;
import com.warehouse_management.system.dao.ISystemDao;
import com.warehouse_management.system.model.*;
import com.warehouse_management.system.service.ISystemService;
import com.warehouse_management.config.PageModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;

@Service
@Transactional
public class ImplSystemPosition implements ISystemService {

    @Autowired
    private ISystemDao systemDao;

    public ISystemDao getSystemDao() {
        return systemDao;
    }

    public void setSystemDao(ISystemDao systemDao) {
        this.systemDao = systemDao;
    }

    /**
     * 万文成
     * @return
     */
    @Override
    public List<Job> queryAllJob(Job job) {
        return systemDao.queryAllJob(job);
    }

    @Override
    public List<Job> queryAllJobById(Job job) {
        return systemDao.queryAllJobById(job);
    }

    /*
     *
     * @PACKAGE_NAME: com.warehouse_management.system.controller
     * @NAME: toPositionList
     * @USER: WanWenCheng
     * @DATE: 2022/10/1
     * @TIME: 10：15
     * @Description: 分页
     * */
    @Override
    public PageModel<Job> PageJobPosition(Job job, PageModel<Job> pageModel) {
        pageModel.setPageNum(pageModel.getPageNum()<=0?1:pageModel.getPageNum());
        pageModel.setPageSize(pageModel.getPageSize()<=0?3:pageModel.getPageSize());

        PageHelper.startPage(pageModel.getPageNum(),pageModel.getPageSize());
        List<Job> jobList = systemDao.queryAllJob(job);

        PageInfo<Job> pageInfo = new PageInfo<>(jobList);

        pageModel.setTotalPage(pageInfo.getPages());
        pageModel.setTotalRows(pageInfo.getTotal());
        pageModel.setData(jobList);
        return pageModel;
    }

    /**
     * 万文成
     * @return
     */
    @Override
    public int addJobPosition(JobCondition job) {
        return systemDao.addJobPosition(job);
    }

    /**
     * 万文成
     * @return
     */
    @Override
    public int updateJobPosition(JobCondition job) {
        return systemDao.updateJobPosition(job);
    }

    @Override
    public int updateJobPositionByState(JobCondition job) {
        return systemDao.updateJobPositionByState(job);
    }

    @Override
    public List<Module> queryAllMoud0() {
        return systemDao.queryAllMoud0();
    }

    @Override
    public List<Module> queryAllMoud1() {
        return systemDao.queryAllMoud1();
    }

    @Override
    public List<Module> queryAllMoud2() {
        return systemDao.queryAllMoud2();
    }

    @Override
    public List<Module> queryAllMoud3() {
        return systemDao.queryAllMoud3();
    }

    @Override
    public List<Module> queryAllMoud4() {
        return systemDao.queryAllMoud4();
    }

    @Override
    public List<Module> queryAllMoud5() {
        return systemDao.queryAllMoud5();
    }

    @Override
    public int addpermiss(Permission permission) {
        return systemDao.addpermiss(permission);
    }

    /**
     * 陈博
     * 根据条件查询所有用户集合
     * @param dept 查询条件
     * @return 用户集合
     */
    public List<Users> getUserListByUsers(Dept dept) {
        return systemDao.getUserListByUsers(dept);
    }

    /**
     * 陈博
     * 根据条件分页查询用户集合
     * @param dept 查询条件
     * @param pageModel 分页条件
     * @return 分页模型
     */
    public PageModel<Users> getUserListByUsers(Dept dept, PageModel<Users> pageModel) {
        pageModel.setPageNum(pageModel.getPageNum()<=0?1:pageModel.getPageNum());
        pageModel.setPageSize(pageModel.getPageSize()<=0?3:pageModel.getPageSize());
        PageHelper.startPage(pageModel.getPageNum(),pageModel.getPageSize());
        List<Users> userList = systemDao.getUserListByUsers(dept);
        PageInfo<Users> pageInfo = new PageInfo<Users>(userList);

        pageModel.setData(new ArrayList<Users>(userList));
        pageModel.setTotalPage(pageInfo.getPages());
        pageModel.setTotalRows(pageInfo.getTotal());
        return pageModel;
    }


    /**
     * 陈博
     * @param user
     * @return
     */
    public int addUser(Users user) {
        return systemDao.addUser(user);
    }

    /**
     * 林涛
     * @param pageModel
     * @return 分页查询用户
     */
    @Override
    public PageModel<Users> getUserList(PageModel<Users> pageModel) {
        pageModel.setPageNum(pageModel.getPageNum()<=0?1:pageModel.getPageNum());
        pageModel.setPageSize(pageModel.getPageSize()<=0?10:pageModel.getPageSize());

        PageHelper.startPage(pageModel.getPageNum(),pageModel.getPageSize());
        List<Users> userList = systemDao.getUserList();
        PageInfo<Users> usersPageInfo = new PageInfo<>(userList);
        pageModel.setTotalPage(usersPageInfo.getPages());
        pageModel.setTotalRows(usersPageInfo.getTotal());
        pageModel.setData(usersPageInfo.getList());
        return pageModel;
    }

    /**
     * 连小龙
     * 查询全部模块
     * @param
     * @return
     */
    @Override
    public List<Module> queryAllModule(Module module) {
        return systemDao.queryAllModule(module);
    }

    /**
     * 连小龙
     * 分页查询模块
     * @param module
     * @param pageModel
     * @return
     */
    @Override
    public PageModel<ModuleCondition> PageModulePosition(Module module, PageModel<ModuleCondition> pageModel) {

        List<Module> moduleList1 = systemDao.queryAllModule(module);

        pageModel.setPageNum(pageModel.getPageNum()<=0?1:pageModel.getPageNum());
        pageModel.setPageSize(pageModel.getPageSize()<=0?6:pageModel.getPageSize());
        PageHelper.startPage(pageModel.getPageNum(),pageModel.getPageSize());
        ArrayList<ModuleCondition> mds = new ArrayList<ModuleCondition>();
        List<Module> moduleList = systemDao.queryAllModule(module);
        for (Module md : moduleList) {
            ModuleCondition mdc = new ModuleCondition();
            String module_Fid = md.getModule_pid();
            mdc.setModule_id(md.getModule_id());
            mdc.setModule_rname(md.getModule_rname());
            mdc.setModule_pid(md.getModule_pid());
            mdc.setModule_murl(md.getModule_murl());
            mdc.setModule_state(md.getModule_state());
            for (Module module1 : moduleList1) {
                if (module_Fid.equals(module1.getModule_id()) &&module_Fid != "0"){
                    String rname = module1.getModule_rname();
                    mdc.setModule_fname(rname);
                    mds.add(mdc);
                    break;
                }else if (module_Fid.equals("0")){
                    mds.add(mdc);
                    break;
                }
            }
        }




        PageInfo<Module> pageInfo = new PageInfo<>(moduleList);

        pageModel.setTotalPage(pageInfo.getPages());
        pageModel.setTotalRows(pageInfo.getTotal());
        pageModel.setData(mds);
        return pageModel;
    }

    @Override
    public List<Module> queryAllModuleById(String module_id) {
        return systemDao.queryAllModuleById(module_id);
    }


    /**
     * 连小龙
     * 通过模块名称查询模块
     * @param
     * @return
     */
    @Override
    public PageModel<ModuleCondition> queryAllModuleByName(Module module, PageModel<ModuleCondition> pageModel) {

        List<Module> moduleList1 = systemDao.queryAllModule(module);

        pageModel.setPageNum(pageModel.getPageNum()<=0?1:pageModel.getPageNum());
        pageModel.setPageSize(pageModel.getPageSize()<=0?1:pageModel.getPageSize());
        PageHelper.startPage(pageModel.getPageNum(),pageModel.getPageSize());
        ArrayList<ModuleCondition> mds = new ArrayList<ModuleCondition>();
        List<Module> moduleList = systemDao.queryAllModuleByName(module.getModule_rname());
        for (Module md : moduleList) {
            ModuleCondition mdc = new ModuleCondition();
            String module_Fid = md.getModule_pid();
            mdc.setModule_id(md.getModule_id());
            mdc.setModule_rname(md.getModule_rname());
            mdc.setModule_pid(md.getModule_pid());
            mdc.setModule_murl(md.getModule_murl());
            mdc.setModule_state(md.getModule_state());
            for (Module module1 : moduleList1) {
                if (module_Fid.equals(module1.getModule_id()) &&module_Fid != "0"){
                    String rname = module1.getModule_rname();
                    mdc.setModule_fname(rname);
                    mds.add(mdc);
                    break;
                }else if (module_Fid.equals("0")){
                    mds.add(mdc);
                    break;
                }
            }
        }

        PageInfo<Module> pageInfo = new PageInfo<>(moduleList);

        pageModel.setTotalPage(pageInfo.getPages());
        pageModel.setTotalRows(pageInfo.getTotal());
        pageModel.setData(mds);
        return pageModel;
    }

    /**
     * 连小龙
     * 增加模块
     * @param module
     * @return
     */
    @Override
    public int addModulePosition(Module module) {
        return systemDao.addModulePosition(module);
    }

    /**
     * 连小龙
     * 修改模块
     * @param module
     * @return
     */
    @Override
    public int updateModulePosition(Module module) {
        return systemDao.updateModulePosition(module);
    }

    /**
     * 连小龙
     * 修改模块状态
     * @param md
     * @return
     */
    @Override
    public int updateModulePositionByState(Module md) {
        return systemDao.updateModulePositionByState(md);
    }

    /**
     * 周永成
     * 查询日志
     * @return 日志集合
     */
    @Override
    public PageModel<Journal> queryAllJournal(PageModel<Journal> pageModel) {
        pageModel.setPageNum(pageModel.getPageNum()<=0?1:pageModel.getPageNum());
        pageModel.setPageSize(pageModel.getPageSize()<=0?10:pageModel.getPageSize());

        PageHelper.startPage(pageModel.getPageNum(),pageModel.getPageSize());
        List<Journal> journals = systemDao.queryAllJournal();
        PageInfo<Journal> usersPageInfo = new PageInfo<>(journals);
        pageModel.setTotalPage(usersPageInfo.getPages());
        pageModel.setTotalRows(usersPageInfo.getTotal());
        pageModel.setData(usersPageInfo.getList());

        return pageModel;
    }

    /**
     * 根据编号 查询日志
     * @param id 编号
     * @return 日志
     */
    @Override
    public Journal queryJournalById(Integer id) {
        return systemDao.queryJournalById(id);
    }

    /**
     * 模糊查询编号
     * @param j_Id              员工编号
     * @param uname             员工姓名
     * @param jcontent          日志内容
     * @param module_rname      操作模块
     * @param jdate1            记录时间1
     * @param jdate2            记录时间2
     * @return
     */
    @Override
    public PageModel<Journal> queryJournalByLike(Integer j_Id,
                                                 String uname,
                                                 String jcontent,
                                                 String module_rname,
                                                 String jdate1,
                                                 String jdate2,
                                                 PageModel<Journal> pageModel) {
        pageModel.setPageNum(pageModel.getPageNum()<=0?1:pageModel.getPageNum());
        pageModel.setPageSize(pageModel.getPageSize()<=0?10:pageModel.getPageSize());

        PageHelper.startPage(pageModel.getPageNum(),pageModel.getPageSize());

        List<Journal> journals = systemDao.queryJournalByLike(j_Id,
                                                                uname,
                                                                jcontent,
                                                                module_rname,
                                                                jdate1,
                                                                jdate2);

        PageInfo<Journal> usersPageInfo = new PageInfo<>(journals);
        pageModel.setTotalPage(usersPageInfo.getPages());
        pageModel.setTotalRows(usersPageInfo.getTotal());
        pageModel.setData(usersPageInfo.getList());

        return pageModel;
    }

    /**
     * 邹佳乐
     * @return
     */
    @Override
    public List<City> queryAllCity(String sheng,String shi) {
        return systemDao.queryAllCity(sheng,shi);
    }
}
